# https://www.lintcode.com/problem/climbing-stairs/description
# 描述
# 假设你正在爬楼梯，需要n步你才能到达顶部。但每次你只能爬一步或者两步，你能有多少种不同的方法爬到楼顶部？
# 样例
# 比如n=3，1+1+1=1+2=2+1=3，共有3种不同的方法
# 返回 3
class Solution:
    """
    @param n: An integer
    @return: An integer
    """
    def climbStairs(self, n):
        # write your code here
        if n <= 2:
            return n
        else:
            step = [1,2]
            for i in range(n - 2):
                step.append(step[-1] + step[-2])
            return step[-1]